LINQ পরিচিতি এবং এর প্রয়োগ

Microsoft Technologies - সি শার্প (C#) - ল্যাম্বডা এক্সপ্রেশন এবং লিঙ্ক (LINQ) | NCTB BOOK

LINQ (Language-Integrated Query) পরিচিতি

LINQ (লিংক) সি# প্রোগ্রামিং ল্যাঙ্গুয়েজে ডেটা কোয়েরি চালানোর একটি শক্তিশালী টুল যা বিভিন্ন ডেটা সোর্সের (যেমন: অ্যারে, লিস্ট, ডেটাবেস, XML) উপর কাজ করে। LINQ এর মাধ্যমে আমরা ডেটাকে সরাসরি কোয়েরি করতে পারি, যেটা SQL এর মতো ডেটাবেস কিউরির মতই কাজ করে তবে সাধারণ ডেটাসেটের উপরেও প্রয়োগ করা যায়। LINQ ব্যবহারের ফলে কোড আরও সংক্ষিপ্ত ও পড়তে সহজ হয়।

LINQ দুটি ধরনের সিনট্যাক্স সরবরাহ করে:

  1. কোয়েরি সিনট্যাক্স (Query Syntax): SQL-এর মতো দেখতে।
  2. মেথড সিনট্যাক্স (Method Syntax): ল্যাম্বডা এক্সপ্রেশন ভিত্তিক।

LINQ এর ব্যবহার (প্রয়োগ)

LINQ ব্যবহারের মাধ্যমে আমরা বিভিন্ন অপারেশন চালাতে পারি, যেমন:

  • ফিল্টার করা (Where)
  • সাজানো (OrderBy, OrderByDescending)
  • নির্দিষ্ট ডেটা নির্বাচন করা (Select)
  • গ্রুপ করা (GroupBy)
  • সংখ্যা গণনা করা (Count)
  • যোগফল বা গড় নির্ণয় করা (Sum, Average)

১. LINQ কোয়েরি সিনট্যাক্স (Query Syntax)

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // কোয়েরি সিনট্যাক্স ব্যবহার করে ফিল্টার করা
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        Console.WriteLine("Even Numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

২. LINQ মেথড সিনট্যাক্স (Method Syntax)

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // মেথড সিনট্যাক্স ব্যবহার করে ফিল্টার করা
        var evenNumbers = numbers.Where(x => x % 2 == 0);

        Console.WriteLine("Even Numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

LINQ এর কিছু সাধারণ অপারেশন

LINQ অনেকগুলো অপারেশন সরবরাহ করে যা ডেটা নিয়ে বিভিন্ন ধরনের কাজ করতে ব্যবহার করা হয়। নিচে LINQ এর কয়েকটি সাধারণ অপারেশন নিয়ে উদাহরণ দেওয়া হলো:

১. Where: নির্দিষ্ট শর্ত পূরণ করা ডেটা ফিল্টার করা

var evenNumbers = numbers.Where(x => x % 2 == 0);

২. Select: ডেটা সংগ্রহ থেকে নির্দিষ্ট ফিল্ড বা উপাদান নির্বাচন করা

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
var nameLengths = names.Select(name => name.Length);

foreach (var length in nameLengths)
{
    Console.WriteLine(length); // Output: 5, 3, 7
}

৩. OrderBy এবং OrderByDescending: ডেটা ক্রমানুসারে সাজানো

var orderedNumbers = numbers.OrderBy(x => x);
var descendingNumbers = numbers.OrderByDescending(x => x);

৪. GroupBy: ডেটাকে নির্দিষ্ট শর্ত অনুযায়ী গ্রুপ করা

List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Avocado", "Blueberry" };
var groupedFruits = fruits.GroupBy(fruit => fruit[0]);

foreach (var group in groupedFruits)
{
    Console.WriteLine("Fruits that start with: " + group.Key);
    foreach (var fruit in group)
    {
        Console.WriteLine(fruit);
    }
}

৫. Count, Sum, Average: ডেটা গণনা ও গাণিতিক অপারেশন

int count = numbers.Count();
int sum = numbers.Sum();
double average = numbers.Average();

Console.WriteLine($"Count: {count}, Sum: {sum}, Average: {average}");
// Output: Count: 9, Sum: 45, Average: 5

একটি পূর্ণ উদাহরণ যেখানে একাধিক LINQ অপারেশন ব্যবহার করা হয়েছে

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<string> students = new List<string> { "Alice", "Bob", "Charlie", "Alex", "Brian" };

        // যেখানে নামের দৈর্ঘ্য ৪ বা তার বেশি, তাদের ফিল্টার করুন এবং সাজান
        var filteredStudents = students
                               .Where(s => s.Length >= 4)
                               .OrderBy(s => s)
                               .Select(s => s.ToUpper());

        Console.WriteLine("Filtered and Ordered Students:");
        foreach (var student in filteredStudents)
        {
            Console.WriteLine(student);
        }
    }
}

ব্যাখ্যা

  • প্রথমে আমরা Where অপারেটরের মাধ্যমে ফিল্টার করেছি যাদের নামের দৈর্ঘ্য ৪ বা তার বেশি।
  • তারপর OrderBy অপারেটর ব্যবহার করে নামগুলোকে ক্রমানুসারে সাজানো হয়েছে।
  • শেষে Select অপারেটরের মাধ্যমে প্রতিটি নামকে uppercase এ রূপান্তরিত করেছি।

সংক্ষেপে LINQ এর সুবিধা

  1. সংক্ষিপ্ত ও সহজ কোড: LINQ ব্যবহার করলে কোড আরো সংক্ষিপ্ত হয় এবং পড়তে সহজ হয়।
  2. ইন্টেলিসেন্স সহায়ক: স্ট্রংলি টাইপড হওয়ায় কম্পাইল টাইমে ত্রুটি শনাক্ত করা সহজ।
  3. মাল্টিপল ডেটা সোর্সে প্রযোজ্য: LINQ ডেটাবেস, XML, অবজেক্ট, এবং আরো বিভিন্ন ডেটাসেটের সাথে কাজ করতে পারে।
  4. ডেটা প্রক্রিয়াকরণ সহজ করে: LINQ এর মাধ্যমে সহজে ফিল্টার, সাজানো, গ্রুপিং, এবং গণনা করতে পারি।

LINQ ব্যবহার করে সি# এ ডেটা ম্যানিপুলেশনকে অনেক সহজ করা যায়। এটি ডেটাবেস কোয়েরির মতই কাজ করে, তাই ডেটা প্রসেসিং বা ডেটা বিশ্লেষণে LINQ অনেক গুরুত্বপূর্ণ।

Content added By
Promotion